package server;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @Author: Tao Zheng
 * @classNmae: Response
 * @packageName: server
 * @description:  封装Response对象，需要依赖于OutputStream
 *                该对象需要提供核心方法，输出html
 * @DATE: 2021/7/13 15:55
 */
public class Response {

    private OutputStream outputStream;

    private Response(){

    }

    public Response(OutputStream outputStream) {
        this.outputStream = outputStream;
    }

    //使用输出流输出指定字符串
    public void output(String content) throws IOException {
        outputStream.write(content.getBytes());
    }

    /**
     *
     * @param path url,随后要根据url来获取到静态资源的绝对路径，进一步根据绝对路径读取该静态资源文件，最终通过输出流输出
     *
     *             当url为localhost:8080时，  path= / ------>classes,file存在所以无法进入404分支判断
     */
    public void outputHtml(String path) throws IOException {
        // 获取静态资源文件的绝对路径
        String absoluteResourcePath = path;

        // 输入静态资源文件
        File file = new File(absoluteResourcePath);
        if (file.exists() && file.isFile()){
            //读取静态资源文件，输出静态资源
            StaticResourceUtil.outputStaticResource(new FileInputStream(file), outputStream);
        }else {
            //输出404
            output(HttpProtocolUtil.getHttpHeader404());
        }
    }
}
